package htmlreaderclient;

import htmlreader.Dados;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.ObjectInputStream;
import java.net.Socket;
import javax.swing.JOptionPane;

public class ConsoleServidor {

    public static String[] listaDeNomesDosArquivos;
    public static String ip;
    public static int porta;
    public static String diretorio;
    private static String[] listaDeNomesDasImagens;

	/**
	 * @param args
	 */
	public static void main(String[] args) {

        inicializarCliente();

		while (true) {
			String mensagem = JOptionPane.showInputDialog(null,
					"Digite uma opção: \n1- listar arquivos\n2- recuperar arquivo\n3- recuperar imagem");
			try {
				Socket socket = new Socket(ip, porta);				
				DataOutputStream out = new DataOutputStream(socket.getOutputStream());                
				out.writeUTF(mensagem);

                //Tratar diferentes tipos de retornos
                if(mensagem.equals("1")){
                    JOptionPane.showConfirmDialog(null, "Listagem de arquivos carregada");

                    //Exibir a lista de arquivos
                    ObjectInputStream input = new ObjectInputStream(socket.getInputStream());
                    Dados dado = new Dados();
                    Object o = input.readObject();
                    dado =  (Dados) o;
                    listaDeNomesDosArquivos = dado.getListaDeArquivosDoServidor();
                    //JOptionPane.showConfirmDialog(null, listaDeNomesDosArquivos);
                    System.out.println(listaDeNomesDosArquivos.toString());
                    input.close();

                    //teste
                    
                    
                }else if(mensagem.equals("2")){
                    JOptionPane.showConfirmDialog(null, "O arquivo será salvo no diretório selecionado");
                    //Método que salva arquivo
                    
                }else if(mensagem.equals("3")){
                    //Testar se existe algum arquivo selecionado
                    JOptionPane.showConfirmDialog(null, "Recuperando imagens do arquivo selecionado");
                    //Chamar método que trata requisição de imagens
                    //Exibir mensagem de finalização
                    
                }else{
                    DataInputStream in = new DataInputStream(socket.getInputStream());
                    JOptionPane.showConfirmDialog(null, in.readUTF());
                    in.close();
                }				
				out.close();
				socket.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

    public static void inicializarCliente() {

        //Usuário informa porta de conexão
        ip =    JOptionPane.showInputDialog(null, "Digite o número ip do servidor");
        String port = JOptionPane.showInputDialog(null, "Digite o número da porta do servidor");
        diretorio = JOptionPane.showInputDialog(null, "Digite o caminho do diretório para armazenar os arquivos");

        porta = Integer.parseInt(port);

    }

    public static void abrir_leitura (File arq_txt )  {

       String linha = null;
       String pal = "<img src=";
       String palFim = ".jpg";
      try {
         FileReader reader = new FileReader(arq_txt);
         BufferedReader leitor = new BufferedReader(reader);
         int posicaoFinal;
         int posicaoInicial;
         int i = 0;

         while ((linha = leitor.readLine()) != null) {
               //System.out.println(linha);
           if(linha.indexOf(pal) > -1){ // verifica se tem oque vc está procurando em sua string
            posicaoInicial = linha.indexOf(pal); // pega a posição do caracter.
            posicaoFinal = linha.indexOf(palFim);
            String nomeArquivo = linha.substring(posicaoInicial, posicaoFinal);
            listaDeNomesDasImagens[i] = nomeArquivo;
            i++;


            //System.out.println(posicaoCaracter);
              }else {
                //System.out.println("Não foi encontrado imagens na linha");
              }
         }
         leitor.close();
         reader.close();

      } catch (Exception e) {
         e.printStackTrace();
      }

    }


}
